import  easyocr
from PyQt5.QtCore import QThread, pyqtSignal

# 定义线程类
class Thread_do(QThread):
    # 定义带参数一个信号及所需参数
    _signal = pyqtSignal(str)
    # 源文件夹
    _pic_path = ""
    # 图像列表
    _pic_list = []
    _image_path = ""

    _reader = easyocr.Reader(["ch_sim", "en"], gpu=False)

    # 重写类线程类的初步化方法，用于将传入的几个参数保存到类成员中
    def __init__(self, _image_path):
        super().__init__()
        # self._pic_path = _path
        # self._pic_list = _pic_list
        self._image_path = _image_path

    def run(self):
        # 定义一个列表，用于保存每个图像对象
        # list_images = []
        # for i in range(len(self._pic_list)):
        #     name = f"{self._pic_path}/{self._pic_list[i]}"
        #     # 返回一个文本参数，即共需要识别几页，正在处理第页页，文件名是什么，如【开始处理1-3张图片，d:\\aaa.png】
        #     self._signal.emit(f'[{i+1}/{len(self._pic_list)}] {name}\n')
        #     result = self._reader.readtext(name)
        #     text = ""
        #     for line in result:
        #         # 因为easyocr得到的文本比较多，如只有第1列的内容是我们需要识别文本，
        #         # 其它的我们用不上，所需就只取第行的第1列，添加到text中。
        #         text += line[1]
        #     text += "\n"
        #     # 返回本页识别的内容
        #     self._signal.emit(text)

        self._signal.emit(f'[识别]\n{self._image_path}')
        result = self._reader.readtext(self._image_path)
        text = "---------------------\n"
        for line in result:
            # 因为easyocr得到的文本比较多，如只有第1列的内容是我们需要识别文本，
            # 其它的我们用不上，所需就只取第行的第1列，添加到text中。
            text += line[1]
            text += "\n"
        text += "---------------------"
        text += "\n\n"
        # 返回本页识别的内容
        self._signal.emit(text)


        # 返回全部完成信号
        self._signal.emit("finished")
